#NoEnv
#ErrorStdOut
#SingleInstance,Ignore
FileInstall, ahk_bbs.gif, %A_Temp%\ahk_bbs.gif, 1

;================================托盘菜单创建======================================

Menu, Tray, Icon, pifmgr.dll, 5, 1 ;尾部参数"1"可使程序在挂起热键时图标不变
Menu, Tray, Tip, 　开心截图 V1.08`nxsm121@163.com
Menu, Tray, NoStandard
Menu, Tray, Add, 截图, Capture
Menu, Tray, Add, 设置, Guishow
Menu, Tray, Add, 退出, Exit
Menu, Tray, Add, 帮助, help
Menu, Tray, Default, 截图
Menu, Tray, Click,1

Gui, font, s8
Gui, Add, Text, x15 y25 w30 h20 +Center, p1:
Gui, Add, Text, x15 y65 w30 h20 +Center, p2:
Gui, Add, Text, x15 y105 w30 h20 +Center, p3:
Gui, Add, Text, x15 y145 w30 h20 +Center, p4:
Gui, Add, Text, x15 y185 w30 h20 +Center, p5:
Gui, Add, Text, x15 y225 w30 h20 +Border +Center, p6:
Gui, Add, Text, x15 y265 w30 h20 +Border +Center, p7:
Gui, Add, Text, x135 y25 w30 h20 +Border +Center, p8:
Gui, Add, Text, x135 y65 w30 h20 +Border +Center, p9:
Gui, Add, Text, x135 y105 w30 h20 +Center, p10:
Gui, Add, Text, x135 y145 w30 h20 +Center, p11:
Gui, Add, Text, x135 y185 w30 h20 +Center, p12:
Gui, Add, Text, x135 y225 w30 h20 +Center, p13:
Gui, Add, Text, x135 y265 w30 h20 +Center, p14:


Gui, Add, ComboBox, x45 y25 w60 h20 vp1 hwndbox1 gMtext, 0|1|2|3|4|5|6||7
Gui, Add, ComboBox, x45 y65 w60 h20 vp2 hwndbox2 gMtext, 0||1
Gui, Add, ComboBox, x45 y105 w60 h20 vp3 hwndbox3 gMtext, 0||Screen.jpg
Gui, Add, ComboBox, x45 y145 w60 h20 vp4 hwndbox4 gMtext, 10|20|30|40|50|60|70|80|90|100||
Gui, Add, ComboBox, x45 y185 w60 h20 vp5 hwndbox5 gMtext, Black|Green|Silver|Lime|Gray|Olive|White|Yellow|Maroon|Navy|Red|Blue|Purple|Teal|Fuchsia|Aqua||
Gui, Add, ComboBox, x45 y225 w60 h20 vp6 hwndbox6 gMtext, 0||%A_ScreenWidth%
Gui, Add, ComboBox, x45 y265 w60 h20 vp7 hwndbox7 gMtext, 0||%A_ScreenHeight%
Gui, Add, ComboBox, x165 y25 w60 h20 vp8 hwndbox8 gMtext, 0||%A_ScreenWidth%
Gui, Add, ComboBox, x165 y65 w60 h20 vp9 hwndbox9 gMtext, 0||%A_ScreenHeight%
Gui, Add, ComboBox, x165 y105 w60 h20 vp10 hwndbox10 gMtext, 0||%A_ScreenWidth%
Gui, Add, ComboBox, x165 y145 w60 h20 vp11 hwndbox11 gMtext, 0||%A_ScreenHeight%
Gui, Add, ComboBox, x165 y185 w60 h20 vp12 hwndbox12 gMtext, 0||1/0
Gui, Add, ComboBox, x165 y225 w60 h20 vp13 hwndbox13 gMtext,0||1
Gui, Add, ComboBox, x165 y265 w60 h20 vp14 +Disabled hwndbox14 gMtext,预留||
Gui, Add, Button, x145 y360 w70 h30 gGuiClose, 关闭
Gui, Add, Button, x30 y360 w70 h30 hwndbut1 ggetwindow, 粘贴窗口
Gui, Add, Text, cblue x10 y300 w225 h50 hwndstc1 vMytext ghelp +Border, Run CaptureScreen.exe "p1" "p2" "p3" "p4" "p5" "p6" "p7" "p8" "p9" "p10" "p11" "p12"
Gui, Add, GroupBox, x5 y5 w230 h295 +Center, 截图参数设置
Gui, Show, AutoSize, CaptureScreen
Gui, Submit, NoHide
AddToolTip(box1,"截图区域选择方式`np1 = 0 桌面 (默认项)`np1 = 1 当前激活窗口`np1 = 2 当前激活用户区`np1 = 3 当前激活显示器`np1 = 4 鼠标框选区域截图`np1 = 5 预选框区域截图`np1 = 6 同时具备p1 = 4和p1 = 5两种方式`np1 = 7 固定预选框，选择区域截图")

AddToolTip(box2,"截图包含光标与否`np2 = 0 不包含光标(默认项)`np2 = x 为非 0 的其它任意值时，截图包含光标")

AddToolTip(box3,"截图贮存方式`np3 = 0 截图将被传到剪贴板 (默认项)`np3 = File 截图贮存为File`. BMP/JPG/PNG/GIF/TIF`nFile是全路径文件名时，截图文件将存到对应目录`nFile是不含路径时，截图文件将存到程序所在目录")
AddToolTip(box4,"JPG格式文件的压缩比率等级(默认：100),`n1~100的任意整数,数值超高,质量就越好")
AddToolTip(box5,"截图区域显示颜色 (默认：Aqua = 0x00FFFF)`n可以是颜色表中的颜色名称或者RGB值(HEX)`n也可以用其它颜色,但只能用RGB值(HEX)`nBlack = 000000`nGreen = 008000`nSilver = C0C0C0`nLime = 00FF00`nGray = 808080`nOlive = 808000`nWhite = FFFFFF`nYellow = FFFF00`nMaroon = 800000`nNavy = 000080`nRed = FF0000`nBlue = 0000FF`nPurple = 800080`nTeal = 008080`nFuchsia = FF00FF`nAqua = 00FFFF")
AddToolTip(box6,"p6为任意正整数，表示截图区域起点X坐标，`n如果省略或者为0，截图区域以其它参数定义")
AddToolTip(box7,"p7为任意正整数，表示截图区域起点Y坐标，`n如果省略或者为0，截图区域以其它参数定义")
AddToolTip(box8,"p8为任意正整数，表示截图区域终点X坐标，`n如果省略或者为0，截图区域以其它参数定义`n当p1=7时，p8为固定预选框的宽度")
AddToolTip(box9,"p9为任意正整数，表示截图区域终点Y坐标，`n如果省略或者为0，截图区域以其它参数定义`n当p1=7时，p9为固定预选框的高度")
AddToolTip(box10,"p10为任意正整数，表示截图缩放宽度，`n如果省略或者为0，截图保持截获的实际尺寸")
AddToolTip(box11,"p11为任意正整数，表示截图缩放高度，`n如果省略或者为0，截图保持截获的实际尺寸")
AddToolTip(box12,"p12 = S/I　S为任意正整数，表示重复截图页数`nI为任意正整数，表示重复截图时间间隔(毫秒ms)`n如果省略或者为0，p12 = 1/0")
AddToolTip(box13,"p13 = 1 重复上次截图操作")
AddToolTip(box14,"预留扩展选项参数")
AddToolTip(but1,"当p3=0时，截图自动粘贴到此按钮指定的窗口内")
AddToolTip(stc1,"鼠标单击此处弹出帮助窗口")
Return

Exit:
        Gui,1estroy
        Gui,2estroy
        ExitApp

GuiEscape:
GuiClose:
        Gui, 1:Submit
Return

Guishow:
        Gui, 1:show
Return

Mtext:
        Gui, 1:Submit, NoHide
        GuiControl,, Mytext, Run CaptureScreen.exe "%p1%" "%p2%" "%p3%" "%p4%" "%p5%" "%p6%" "%p7%" "%p8%" "%p9%" "%p10%" "%p11%" "%p12%" "%p13%"
Return

;===================================开心截图 V1.08==================================;

PrintScreen::
Capture:
        Gui, 1:Submit
        IfNotExist, CaptureScreen.exe
                {
                MsgBox, 64, 开心截图 V1.08, 截图程序"CaptureScreen.exe"不存在！`n程序不能继续运行！, 1
                Return
                }
        ;"p1" "p2" "p3" "p4" "p5" "p6" "p7" "p8" "p9" "p10" "p11" "p12"
        RunWait CaptureScreen.exe /f "%p1%" "%p2%" "%p3%" "%p4%" "%p5%" "%p6%" "%p7%" "%p8%" "%p9%" "%p10%" "%p11%" "%p12%" "%p13%"
        ;~ MsgBox, 64, 开心截图 V1.08, 截图已经成功传送到剪贴板中！`n在相关窗口中按＂Ctrl + V＂粘贴！, 0.5
        If ControlHWND
                {
                ;~   IfWinExist, %act_Title% ahk_id %act_id%
                ;~   WinActivate, %act_Title% ahk_id %act_id%
                ;~   ControlFocus, , %act_Title% ahk_id %ControlHWND%
                ;~ send, {ctrl Down}{v}{ctrl up}
                ;~ ControlSend, %ControlclassNN%,{ctrl Down}v{ctrl up}, ahk_id %act_id%
                ControlSend, ,{ctrl Down}v{ctrl up}, ahk_id %ControlHWND%
                }
Return

getwindow:
        Gui, 1:Hide
        SetTimer, Get_win_info, 100
Return

Get_win_info:
        MouseGetPos, , , act_id, ControlclassNN
        WinGetTitle, act_Title, ahk_id %act_id%
        MouseGetPos,,,,ControlHWND, 2 ;2限定获得的是控件的句柄(hwnd)
        ToolTip,
                (
操作提示：单击鼠标中键结束窗口获取！
窗口：%act_Title%
控件：%ControlclassNN%
                )
Return

~MButton::
        SetTimer, Get_win_info, Off
        ToolTip
        ;~ MsgBox, %act_Title%/%act_id%`n%ControlclassNN%/%ControlHWND%
Return

;~ #!Space::reload ;debug

;==============================帮助================================================;
#IfWinActive, CaptureScreen
f1::
help:
        help_word =
                (
　　　　　开心截图 V1.08 使用说明

１）：本程序最大的特色是支持透明效果窗口截图；
　　　能连续对框选区域指定页数或时间间隔截图；
　　　可以同时支持窗口控件和框选任意区域截图；
　　　自动粘贴到指定的窗口；重复最后一次截图。
　　　
２）：左键单击托盘图标开始截图，
　　　或者按"rintScreen"热键开始截图。

３）：按住鼠标左键拖动光标，框选截图区域截图，
　　　鼠标左键点击预选框预先框选好的区域截图。

４）：固定尺寸预选框在屏幕上框选截图区域截图，
　　　预选框尺寸增加1个像素点：
　　　Ctrl + Left，Ctrl + Right，Ctrl + Up，Ctrl + Down
　　　预选框增加10个像素点：
　　　Left，Right，Up，Down

５）：八种截图模式都可以通过"p10,p11"参数对
　　　截图区域进行缩放截图。

６）："p6,p7,p8,p9"参数为自定义截图区域截图，
　　　"p13"参数为重复上次截图区域截图。

＜参  数  说  明＞

CaptureScreen.exe支持命令行参数，参数用引号包含,
并且用空格分隔开。
"p1" "p2" "p3" "p4" "p5" "p6" "p7" "p8" "p9" "p10" "p11"

例如:
１）：程序可以不带参数以默认值运行:
CaptureScreen.exe ;(截图到剪贴板)。

２）：CaptureScreen.exe "1" "0" "0" "0"
激活窗口截图到剪贴板。

３）：CaptureScreen.exe "5" "0" "0" "100" "blue"
改变框选区域颜色。

４）：CaptureScreen.exe "4" "0" "test pic.jpg" "0" "0"
 "200" "200" "600" "600" "200" "200" ;(缩放截图到文件)。

５）：CaptureScreen.exe "7" "" "" "" "" "" "" "321" "158"
固定尺寸(321,158)截图，可以用热键精确调整截图尺寸．

[p1]:
"p1 = 0,1,2,3,4,5,6,7" ;截图范围选择方式
"p1 = 0" ;桌面 (默认项)
"p1 = 1" ;当前激活窗口
"p1 = 2" ;当前激活用户区
"p1 = 3" ;当前激活显示器
"p1 = 4" ;鼠标框选区域截图
"p1 = 5" ;预选框区域截图
"p1 = 6" ;同时具备"4"和"5"两种方式
"p1 = 7" ;固定尺寸预选框, 在屏幕上框选截图

[p2]:
"p2 = 0,x" ;截图包含光标与否
"p2 = 0" ;不包含光标 (默认项)
"p2 = x" ;为非"0"的其它任意值时，截图包含光标

[p3]:
"p3 = 0,File" ;截图贮存方式
"p3 = 0" ;截图将被传到剪贴板 (默认项)
"p3 = File" ;截图贮存为"File.BMP/JPG/PNG/GIF/TIF)"，
并存放在脚本所在目录;如果"File"是全路径文件名称，
截图文件将存到对应目录。

[p4]:
"p4 = 1~100" ;JPG格式文件的压缩比率等级,
"1~100"的任意整数,数值超高,质量就越好(默认：100)。

[p5]:
"p5 = xxxxxxxx" ;截图区域显示颜色 (默认：Aqua = 0x00FFFF)
可以是提供的颜色表中的颜色名称或者RGB值(HEX),
也可以用其它颜色,但只能用RGB值(HEX)。

[p6]:
"p6 = xm1" ;xm1为任意正整数，表示截图区域起点X坐标；
如果省略或者为"0"，截图区域以其它参数定义。

[p7]:
"p7 = ym1" ;ym1为任意正整数，表示截图区域起点Y坐标；
如果省略或者为"0"，截图区域以其它参数定义。

[p8]:
"p8 = xm2" ;xm2为任意正整数，表示截图区域终点X坐标；
如果省略或者为"0"，截图区域以其它参数定义。
当p1=7时，p8为固定预选框的宽度，默认为320。

[p9]:
"p9 = ym2" ;ym2为任意正整数，表示截图区域终点Y坐标；
如果省略或者为"0"，截图区域以其它参数定义。
当p1=7时，p9为固定预选框的高度，默认为240。

[p10]:
"p10 = xn" ;xn为任意正整数，表示截图缩放宽度；
如果省略或者为"0"，截图保持截获的实际尺寸。

[p11]:
"p11 = yn" ;yn为任意正整数，表示截图缩放高度；
如果省略或者为"0"，截图保持截获的实际尺寸。

[p12]:
"p12 = S/I" ;S为任意正整数，表示重复截图的页数；
I为任意正整数，表示重复截图的时间间隔(毫秒ms)。
如果省略或者为"0"，"p12 = 1/0"。如果p3没有指定文件
名和目录，截图文件将存在程序所在目录下的"CAP"子
目录下，文件将以"CAP"开头，JPG格式储存。

[p13]:
"p13 = 0,1" ;重复上次截图，；
"p13 = 1"时有效，默认"p13 = 0"。

[p14]:
预留扩展选项参数

＜颜  色  说  明＞

  颜色名称和RGB值(HEX)
  Black   = 0x000000
  Green   = 0x008000
  Silver  = 0xC0C0C0
  Lime    = 0x00FF00
  Gray    = 0x808080
  Olive   = 0x808000
  White   = 0xFFFFFF
  Yellow  = 0xFFFF00
  Maroon  = 0x800000
  Navy    = 0x000080
  Red     = 0xFF0000
  Blue    = 0x0000FF
  Purple  = 0x800080
  Teal    = 0x008080
  Fuchsia = 0xFF00FF
  Aqua    = 0x00FFFF
可省略前缀"Red = FF0000"

＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

开心截图 V1.08是一款共享软件；
你可以自由拷贝，转载．
如果你在使用过程中有疑问，你可以Email给我，
如果有可能，我会回复你！

＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊

开心截图 V1.08　
xsm121@163.com　
乙丑年秋
                )
        Gui, 2:Color, FFFFFF
        Gui, 2:Font, s8
        Gui, 2:+Owner1
        Gui, 2:+ToolWindow +AlwaysOnTop
        Gui, 2:Add, Text, cRed x6 y5 w380 h30,今天是：%A_YYYY%年%A_MM%月%A_DD%日　%A_DDDD%　开心截图每一天!
        Gui, 2:Font, s8,
        Gui, 2:Add, Edit, x6 y40 w380 h305 vMyEdit ReadOnly,
        GuiControl,2:, MyEdit, %help_word%
        Gui, 2:Add, Picture, vPicImage ym gOpenLink, %A_Temp%\ahk_bbs.gif
        Gui, 2:Add, Text, x6 y349 w380 h20 vMyText, 开心截图 V1.08　xsm121@163.com　乙丑年秋
        Gui, 2:Font, underline
        Gui, 2:Add, Text, cBlue x400 y349 w150 h20 gOpenLink, 访问AHK中文论坛
        Gui, 2:Add, Text, cBlue x560 y349 w30 h20 g2GuiClose, OK
        Gui, 2:Font, norm
        Gui, 2:Show, , 开心截图 V1.08  编写：Xushuming
        GuiControl, 2:Focus, static5
Return

2GuiEscape:
2GuiClose:
        Gui, 2:Submit, NoHide
        Gui, 2estroy
Return

;========================================================================================;
; URL gLabels
OpenLink:
        Run, http://forum.ahkbbs.cn/viewthread.php?tid=2365&fromuid=1442
Return

;以下函数来自官网,感谢作者分享
AddToolTip(con,text,Modify = 0){
        static TThwnd,GuiHwnd
        If (!TThwnd){
                Gui,+LastFound
                GuiHwnd:=WinExist()
                TThwnd:=CreateTooltipControl(GuiHwnd)
                }
        VarSetCapacity(TInfo,44,0)
        NumPut(44,TInfo)
        NumPut(1|16,TInfo,4)
        NumPut(GuiHwnd,TInfo,8)
        NumPut(con,TInfo,12)
        NumPut(&text,TInfo,36)
        DetectHiddenWindows,on
        If (Modify){
                SendMessage,1036,0,&TInfo,,ahk_id %TThwnd%
                }
        Else {
                SendMessage,1028,0,&TInfo,,ahk_id %TThwnd%
                SendMessage,1048,0,300,,ahk_id %TThwnd%
                }

        }

CreateTooltipControl(hwind){
        Ret:=DllCall("CreateWindowEx"
                ,"Uint",0
                ,"Str","TOOLTIPS_CLASS32"
                ,"Uint",0
                ,"Uint",2147483648 | 3
                ,"Uint",-2147483648
                ,"Uint",-2147483648
                ,"Uint",-2147483648
                ,"Uint",-2147483648
                ,"Uint",hwind
                ,"Uint",0
                ,"Uint",0
                ,"Uint",0)

        Return Ret
        }

